package es.gesfutbol.web;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import es.gesfutbol.dao.IPartitDeQuinielaDao;
import es.gesfutbol.dao.IQuinielaDao;
import es.gesfutbol.domini.implementacio.PartitDeQuiniela;
import es.gesfutbol.domini.implementacio.Quiniela;
import es.gesfutbol.util.PosicioQuinielaComparator;

public class GesFutbolController  extends MultiActionController {
	
	private IQuinielaDao quinielaDao;
	private IPartitDeQuinielaDao partitDeQuinielaDao;
	
	public IQuinielaDao getQuinielaDao(){
		return quinielaDao;
	}
	
	public void setQuinielaDao(IQuinielaDao quinielaDao){
		this.quinielaDao = quinielaDao;
	}
	
	public IPartitDeQuinielaDao getPartitDeQuinielaDao(){
		return partitDeQuinielaDao;
	}
	
	public void setPartitDeQuinielaDao(IPartitDeQuinielaDao partitDeQuinielaDao){
		this.partitDeQuinielaDao = partitDeQuinielaDao;
	}

	public ModelAndView init(HttpServletRequest request,
			HttpServletResponse response)throws Exception{		
		Quiniela quiniela = quinielaDao.findQuinielaActiva();
		quiniela = quinielaDao.deproxy(quiniela);
		Set<PartitDeQuiniela> partits = quiniela.getPartits();
		List<PartitDeQuiniela> partitsDeQuiniela = new ArrayList<PartitDeQuiniela>(partits);
		partitsDeQuiniela = partitDeQuinielaDao.deproxylist(partitsDeQuiniela);
		Collections.sort(partitsDeQuiniela, new PosicioQuinielaComparator());
		
		ModelMap model = new ModelMap();
		model.put("quinielaActiva", quiniela);
		model.put("llistatPartitsDeQuiniela", partitsDeQuiniela);
		return new ModelAndView("gesfutbol/inicio", model);
		
	}
	
	public ModelAndView error(HttpServletRequest request,
			HttpServletResponse response)throws Exception{		
		return new ModelAndView("gesfutbol/error");
	}
	
//	public ModelAndView showQuinielaActiva(HttpServletRequest request,
//			HttpServletResponse response){
//		
//		Quiniela quiniela = quinielaDao.findQuinielaActiva();
//		quiniela = quinielaDao.deproxy(quiniela);
//		Set<PartitDeQuiniela> partitsDeQuiniela = quiniela.getPartits();
//		
//		ModelMap model = new ModelMap();
//		model.put("partitsDeQuiniela", partitsDeQuiniela);
//		return new ModelAndView("gesfutbol/inicio", model);
//		
//	}
	
}